package com.kgc.kmall.kmallmanagerservice.service;

import com.kgc.kmall.bean.PmsBaseAttrInfo;
import com.kgc.kmall.bean.PmsBaseAttrInfoExample;
import com.kgc.kmall.bean.PmsBaseAttrValue;
import com.kgc.kmall.bean.PmsBaseAttrValueExample;
import com.kgc.kmall.kmallmanagerservice.mapper.PmsBaseAttrInfoMapper;
import com.kgc.kmall.kmallmanagerservice.mapper.PmsBaseAttrValueMapper;
import com.kgc.kmall.service.AttrService;
import org.apache.dubbo.config.annotation.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Set;

@Service
public class AttrServiceImpl  implements AttrService {
    @Resource
    PmsBaseAttrInfoMapper pmsBaseAttrInfoMapper;
    //根据id查询平台属性值属性值
    @Resource
    PmsBaseAttrValueMapper pmsBaseAttrValueMapper;
//查询平台属性
    @Override
    public List<PmsBaseAttrInfo> select(Long catalog3Id) {
        PmsBaseAttrInfoExample example=new PmsBaseAttrInfoExample();
        PmsBaseAttrInfoExample.Criteria criteria = example.createCriteria();
        criteria.andCatalog3IdEqualTo(catalog3Id);
        List<PmsBaseAttrInfo> infoList = pmsBaseAttrInfoMapper.selectByExample(example);
        for (PmsBaseAttrInfo pmsBaseAttrInfo : infoList) {
            PmsBaseAttrValueExample example1=new PmsBaseAttrValueExample();
            PmsBaseAttrValueExample.Criteria criteria1 = example1.createCriteria();
            criteria1.andAttrIdEqualTo(pmsBaseAttrInfo.getId());
            List<PmsBaseAttrValue> pmsBaseAttrValues = pmsBaseAttrValueMapper.selectByExample(example1);
            pmsBaseAttrInfo.setAttrValueList(pmsBaseAttrValues);
        }
        return infoList;
    }
    //添加平台属性
    @Override
    public Integer add(PmsBaseAttrInfo attrInfo) {

        //判断是添加还是修改
        if(attrInfo.getId()==null){
            //添加
            int  i = pmsBaseAttrInfoMapper.insert(attrInfo);
        }else{
            //修改
            int  i=pmsBaseAttrInfoMapper.updateByPrimaryKey(attrInfo);
        }

        //删除原来的属性值,根据attrId
        if(attrInfo.getAttrValueList()!=null){
            PmsBaseAttrValueExample example=new PmsBaseAttrValueExample();
            PmsBaseAttrValueExample.Criteria criteria = example.createCriteria();
            criteria.andAttrIdEqualTo(attrInfo.getId());
            pmsBaseAttrValueMapper.deleteByExample(example);
        }

//        添加新的平台属性值
        if(attrInfo.getAttrValueList()!=null&&attrInfo.getAttrValueList().size()>0){
            pmsBaseAttrValueMapper.insertBatch(attrInfo.getId(),attrInfo.getAttrValueList());
        }
    //转为int类型
        return attrInfo.getId().intValue();
    }



    @Override
    public List<PmsBaseAttrValue> getAttrValueList(Long attrId) {
        PmsBaseAttrValueExample example=new PmsBaseAttrValueExample();
        PmsBaseAttrValueExample.Criteria criteria = example.createCriteria();
        criteria.andAttrIdEqualTo(attrId);
        List<PmsBaseAttrValue> valueList = pmsBaseAttrValueMapper.selectByExample(example);
        return valueList;
    }

    @Override
    public List<PmsBaseAttrInfo> selectAttrInfoValueListByValueId(Set<Long> valueIds) {
        StringBuffer stringBuffer=new StringBuffer();
        String str="";
        for (Long valueId : valueIds) {
            stringBuffer.append(valueId+",");
        }
        if(stringBuffer.length()>0) {
            str=stringBuffer.substring(0, stringBuffer.length() - 1);
        }else{
            str="-1";
        }
        List<PmsBaseAttrInfo> pmsBaseAttrInfos = pmsBaseAttrInfoMapper.selectAttrInfoValueListByValueId(str);
        return pmsBaseAttrInfos;
    }


}
